Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КІ-12

Частина тексту файла

Міністерство освіти і науки України Національний університет «Львівська політехніка» Звіт: «Лабораторна робота № 8 Поліморфізми» Підготував: Ст.гр. КІ-12 Андрощук С.В. Перевірив: Цигилик Л.О. Львів 2008 Мета роботи: Короткі теоретичні відомості Поліморфізм Поліморфізм – це концепція в програмуванні, відповідно до якої використовується спільний інтерфейс для обробки даних різних спеціалізованих типів. Іншими словами один і той же метод може бути визначений для об’єктів різних типів. Конкретна поведінка метода буде залежати від типу об’єкта. С++ підтримує поліморфізм за допомогою динамічного (пізнього) зв’язування та віртуальних функцій. Згідно об'єктно-орієнтованої парадигми, вказівнику на базовий клас можна присвоїти значення адреси об'єкту будь-якого похідного класу. При цьому виклик методів через такий вказівник відбувається у відповідності до типу вказівника, а не до фактичного типу об'єкта, на який він посилається в конкретний момент. Тобто коли звертаємося до функції похідного об'єкту, використовуючи вказівник на базовий клас, викликається функція базового класу. Цей процес носить назву статичного (раннього) зв’язування, коли зв'язки з методами встановлюються жорстко на етапі компіляції програми. Якщо оголосити функцію віртуальною (virtual), то підключається механізм динамічного (пізнього) зв’язування. У такому випадку версія методу буде визначатися на етапі виконання програми в залежності від типу об'єкта, який викликав метод. Тобто при звертанні до функції похідного об'єкту, використовуючи вказівник на базовий клас, викликатиметься функція похідного класу.  //#INCLUDE "STDAFX.H" #INCLUDE <IOSTREAM.H> #INCLUDE "TIME.H" #INCLUDE <CONIO.H> #INCLUDE <IOMANIP.H> #INCLUDE <STDIO.H> #INCLUDE <STDLIB.H> #INCLUDE <STRING.H> //USING NAMESPACE STD; CHAR P[5]; INT MAIN() { ANIMAL *T; DOG *A; CAT *B=NEW CAT(); CARD *C; T=(ANIMAL*)MALLOC(SIZEOF(ANIMAL)); A=(DOG*)MALLOC(SIZEOF(DOG)); C=(CARD*)MALLOC(SIZEOF(CARD)); T->WEIGHT=15; ANIMAL *POLI=B; COUT<<"PRESS <<EXIT>> TO EXIT;\NENTER <<EAT>> OR <<WC>>;\NOR ENTER ANIMAL TO HEAR THE VOICE\NENTER <<HELP>> TO SEE THE LIST"<<ENDL<<"TO SEE OZNAKU ENTER<<DOGA>>OR<<COTA>>"<<ENDL<<"DOG TUSUE KARTU: ENTER<<CARD>>"<<ENDL<<"CAT KUDAE MONETU ENTER<<COINS>>"<<"TO SEE POLI ENTER<<POLI>>"<<ENDL; FOR(;;){ CIN>>P; IF(!STRCMP(P,"EAT")) T->FEED(); ELSE IF(!STRCMP(P,"WC")) T->DOANIMALSTUFF(); ELSE IF (!STRCMP(P,"DOGA")) { A->OZNAKAD(); C->CARDDD(); } ELSE IF (!STRCMP(P,"COTA")) B->OZNAKAC(); ELSE IF (!STRCMP(P,"CARD")) A->CARDDD(); ELSE IF (!STRCMP(P,"COINS")) T->COINSDDD(); //---------------------------------------------------- ELSE IF (!STRCMP(P,"POLI")){ POLI->FUNCTION1(); POLI->FUNCTION2(); } //---------------------------------------------------- ELSE IF(!STRCMP(P,"EXIT")) BREAK; ELSE IF(!STRCMP(P,"HELP")) COUT<<"PRESS <<EXIT>> TO EXIT;\NENTER <<EAT>> OR <<WC>>;\NOR ENTER ANIMAL TO HEAR THE VOICE\NENTER <<HELP>> TO SEE THE LIST"<<ENDL<<"TO SEE OZNAKU ENTER<<DOGA>>OR<<COTA>>"<<ENDL<<"DOG TUSUE KARTU: ENTER<<CARD>>"<<ENDL<<"CAT KUDAE MONETU ENTER<<COINS>>"; ELSE{ T->NAME=P; T->CALL(); } } RETURN 0; } //#include "stdafx.h" #include <iostream.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <conio.h> //using namespace std; class Animal { public: char *name; int weight; public: Animal() {}; ~Animal() ; void Call(); void Feed(); void DoAnimalStuff(); void funct...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини